# -*- coding:utf-8 -*-
# @Author    : g1879
# @date      : 2020/12/11
# @email     : g1879@qq.com
# @File      : 爬东方财富网业绩报表列表.py
"""爬东方财富网业绩报表列表信息"""
from ListPage import Paths, Targets, ListPage, Recorder

# 定义列表页面结构
xpaths = Paths('xpath')
xpaths.next_btn = '//a[text()="下一页"]'  # 下一页按钮
xpaths.pages_count = '//a[text()="下一页"]/preceding-sibling::a[1]'  # 总页数所在元素
xpaths.rows = '//div[@class="dataview-body"]//tbody/tr'  # 数据行
xpaths.set_cols({  # 数据列
    '股票代码': '/td[2]/a', '股票简称': '/td[3]', '每股收益(元)': '/td[5]',
    '营业收入(元)': '/td[6]', '营业收入同比增长(%)': '/td[7]', '营业收入环比增长(%)': '/td[8]',
    '净利润(元)': '/td[9]', '净利润同比增长(%)': '/td[10]', '净利润环比增长(%)': '/td[11]',
    '每股净资产(元)': '/td[12]', '净资产收益率(%)': '/td[13]', '每股经营现金流(元)': '/td[14]',
    '销售毛利率(%)': '/td[15]'
})

url = 'http://data.eastmoney.com/bbsj/202006/yjbb.html'

# 定义爬取目标
targets = Targets(xpaths)
for col_name in xpaths.cols:
    targets.add_target(col_name, col_name)

# 定义记录器，每爬200条写入文件一次
recorder = Recorder('2020业绩.csv', 50)
recorder.set_head(tuple(x for x in xpaths.cols))

# 创建列表页对象，d代表用selenium方式爬取
page = ListPage(xpaths, url, 'd')

# 爬取所有页，记录到文件，不返回数据，每页之间等待2秒
page.get_list(targets, count=1, recorder=recorder, return_data=False, wait=2, show_msg=False)
